package org.cqust.backend.dto.response.mission;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.cqust.backend.entity.mission.Mission;

/**
 * 数据传输对象（DTO），用于表示任务的详细信息。
 * 继承自MissionVersionDetailDTO，增加了任务的唯一标识符。
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class MissionDTO extends MissionVersionDetailDTO {

    /**
     * 任务的唯一标识符。
     * 这个字段用于标识一个特定的任务。
     */
    @Schema(description = "任务的唯一标识符", requiredMode = Schema.RequiredMode.REQUIRED)
    public Long missionId;

    /**
     * 任务是否已发布。
     * 这个字段表示任务是否已经发布，即是否可供学生使用。
     */
    @Schema(description = "任务是否已发布", requiredMode = Schema.RequiredMode.REQUIRED)
    public Boolean published;

    /**
     * 使用Mission对象构造MissionDTO对象。
     *
     * @param mission 任务对象
     */
    public MissionDTO(Mission mission) {
        super(mission.getMissionVersion());
        missionId = mission.getId();
        published = mission.getPublished();
    }
}
